﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Tipler.DataSetler;
using IsKurallari.Sozlesme;
using Tipler.Siniflar;
using System.Data;
using Tipler.OzellikTipleri;
using Tipler.Enumlar;

namespace IKYSWeb.Sozlesme
{
    [YetkiAttribute(EnumSayfaYetkileri.Herkes_Yetkili)]
    public partial class SozlesmeKayit : BasePage
    {

        #region Session Özellikleri

        private int SecilenSozlesmeID
        {
            get { return (int)Session["SecilenSozlesmeID"]; }
            set { Session["SecilenSozlesmeID"] = value; }
        }

        private SozlesmeDataSet SozlesmeListesi
        {
            get { return (SozlesmeDataSet)Session["SozlesmeListesi"]; }
            set { Session["SozlesmeListesi"] = value; }
        }

        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                SozlesmeListesi = null;

                YetkiliBolgeDoldur();
                ListDoldurFromENUM(typeof(EnumEvetHayir), ddlIkinciAplikasyonTalebi, ListeIlkYazı.Yok);
                ListDoldurFromENUM(typeof(EnumEvetHayir), ddlAraziyeGidilmesiGerekliMiCinsDegisikligi, ListeIlkYazı.Seçiniz);
                ddlIkinciAplikasyonTalebi.SelectedValue = EnumEvetHayir.Hayır.GetHashCode().ToString();

                trUcret.Visible = false;
                if (Request.QueryString["u"] != null)
                {
                    if (Request.QueryString["u"].ToString() == "1")
                    {
                        FormDoldur();
                    }
                    else
                        SecilenSozlesmeID = -1;
                }
                else
                    SecilenSozlesmeID = -1;
            }
        }

        private void YetkiliBolgeDoldur()
        {
            //Yetkili Illeri Doldurma
            DataTable dt = AktifKullanici.KullaniciYetkiliBolgeleri.KullaniciYetkiliBolge.DefaultView.ToTable(true, "IlID");
            DataSet ds = new DataSet();
            ds.Merge(dt);
            string YetkiliIller = DSValueToStr(ds);
            IlPrmDataSet.IlPrmRow[] drIller = (IlPrmDataSet.IlPrmRow[])CachePage.IlGetir().IlPrm.Select("IlID IN " + YetkiliIller);
            IlPrmDataSet dsIl = new IlPrmDataSet();
            dsIl.Merge(drIller);
            ListDoldurFromDS(dsIl, ddlIl, "IlAdi", "IlID", ListeIlkYazı.Seçiniz);
            if (drIller.Length == 1)
            {
                ddlIl.SelectedValue = drIller[0].IlID.ToString();
                ddlIl.Enabled = false;
            }

            ddlIl_SelectedIndexChanged(null, null);
        }

        private void FormDoldur()
        {
            trUcret.Visible = true;

            SozlesmeIsKurali oSozlesme = new SozlesmeIsKurali();
            FonksiyonSonuc<SozlesmeDataSet> oSonucSozlesme = oSozlesme.SozlesmeGetirbySozlesmeID(SecilenSozlesmeID);
            if (oSonucSozlesme.HataVarMi)
                throw new Exception(oSonucSozlesme.Hata);

            SozlesmeDataSet.SozlesmeRow drSozlesme = oSonucSozlesme.Sonuc.Sozlesme.FindBySozlesmeID(SecilenSozlesmeID);
            ddlIl.SelectedValue = drSozlesme.IlID.ToString();
            ddlIl_SelectedIndexChanged(null, null);
            ddlIlce.SelectedValue = drSozlesme.IlceID.ToString();
            txtKoyMahalle.Text = drSozlesme.KoyMahalle;
            txtMalikAdi.Text = drSozlesme.MalikAdi;
            txtMalikSoyadi.Text = drSozlesme.MalikSoyadi;
            txtAda.Text = drSozlesme.AdaNo;
            txtParselNo.Text = drSozlesme.ParselNo;
            txtPlanNo.Text = drSozlesme.PlanNo;
            txtPaftaNo.Text = drSozlesme.PaftaNo;
            ucKayitTarihi.Tarih = drSozlesme.KayitTarihi;
            txtKayitNo.Text = drSozlesme.KayitNo;
            if (!drSozlesme.IsIsinYapilacagiTarihNull())
                ucIsinYapilacagiTarih.Tarih = drSozlesme.IsinYapilacagiTarih;
            else
                ucIsinYapilacagiTarih.Clear();

            txtMusteriAdi.Text = drSozlesme.Adi;
            txtMusteriSoyadi.Text = drSozlesme.Soyadi;
            txtUnvan.Text = drSozlesme.Unvani;
            txtTCKimlikNo.Text = drSozlesme.TCKimlikNo;
            txtVergiNo.Text = drSozlesme.VergiNo;
            txtTelefon.Text = drSozlesme.TelefonNo;
            txtAdres.Text = drSozlesme.Adres;

            FonksiyonSonuc<SozlesmeTalepEdilenIsDataSet> oSonucSozlesmeIs = oSozlesme.SozlesmeTalepEdilenIsGetirbySozlesmeID(SecilenSozlesmeID);
            if (oSonucSozlesmeIs.HataVarMi)
                throw new Exception(oSonucSozlesmeIs.Hata);

            SozlesmeTalepEdilenIsDataSet dsSozlesmeIs = oSonucSozlesmeIs.Sonuc;
            foreach (SozlesmeTalepEdilenIsDataSet.SozlesmeTalepEdilenIsRow drSozlesmeIs in dsSozlesmeIs.SozlesmeTalepEdilenIs.Rows)
            {
                if (drSozlesmeIs.IsTurID == EnumIsTur.Aplikasyon.GetHashCode())
                {
                    cbAplikasyon.Checked = true;
                    cbAplikasyon_CheckedChanged(null, null);
                }
                else if (drSozlesmeIs.IsTurID == EnumIsTur.Kadasrtal_Yol_Sınırlarının_Belirlenmesi.GetHashCode())
                {
                    cbKadastrolYolSinirlarininBelirleme.Checked = true;
                }
                else if (drSozlesmeIs.IsTurID == EnumIsTur.Birleştirme.GetHashCode())
                {
                    cbBirlestirme.Checked = true;
                    cbBirlestirme_CheckedChanged(null, null);
                }
                else if (drSozlesmeIs.IsTurID == EnumIsTur.İrtifak_Hakki_Tesisi.GetHashCode())
                {
                    cbIrtifakTesisi.Checked = true;
                    cbIrtifakTesisi_CheckedChanged(null, null);
                }
                else if (drSozlesmeIs.IsTurID == EnumIsTur.İrtifak_Hakki_Terkini.GetHashCode())
                {
                    cbIrtifakTerkini.Checked = true;
                    cbIrtifakTerkini_CheckedChanged(null, null);
                }
                else if (drSozlesmeIs.IsTurID == EnumIsTur.Cins_Degisikligi_Yapili_Hale_Getirme.GetHashCode())
                {
                    cbYapisizkenYapiliHaleGetirme.Checked = true;
                    cbYapisizkenYapiliHaleGetirme_CheckedChanged(null, null);
                }
                else if (drSozlesmeIs.IsTurID == EnumIsTur.Cins_Degisikligi_Yapisiz_Hale_Getirme.GetHashCode())
                {
                    cbYapiliykenYapisizHaleGetirme.Checked = true;
                    cbYapiliykenYapisizHaleGetirme_CheckedChanged(null, null);
                }
                else if (drSozlesmeIs.IsTurID == EnumIsTur.Yer_Gösterme_Parseli.GetHashCode())
                {
                    cbYerGostermeParsel.Checked = true;
                }
                else if (drSozlesmeIs.IsTurID == EnumIsTur.Yer_Gösterme_Bağimsiz_Bölum.GetHashCode())
                {
                    cbYerGostermeBagimsiz.Checked = true;
                }
            }
        }

        private void SozlesmeTalepedilenIsKaydet(ref SozlesmeTalepEdilenIsDataSet dsSozlesmeIs, ref Decimal ToplamUcret, EnumIsTur enmIsTur)
        {
            SozlesmeTalepEdilenIsDataSet.SozlesmeTalepEdilenIsRow drSozlesmeIS = dsSozlesmeIs.SozlesmeTalepEdilenIs.NewSozlesmeTalepEdilenIsRow();

            drSozlesmeIS.SozlesmeID = -1;
            drSozlesmeIS.IsTurID = Convert.ToByte(enmIsTur.GetHashCode());

            decimal Ucret = UcretHesapla(Convert.ToByte(ddlIl.SelectedValue), enmIsTur, ucYuzolcumu.OndalikSayi);
            ToplamUcret += Ucret;
            drSozlesmeIS.UcretKDVDahil = Ucret;
            drSozlesmeIS.Ucret = Ucret;

            if (enmIsTur == EnumIsTur.Birleştirme)
                drSozlesmeIS.ParselSayisi = Convert.ToByte(ucParselSayiBirlestirme.Sayi);
            else if (enmIsTur == EnumIsTur.İrtifak_Hakki_Tesisi)
                drSozlesmeIS.ParselSayisi = Convert.ToByte(ucParselSayiTesisi.Sayi);
            else if (enmIsTur == EnumIsTur.İrtifak_Hakki_Terkini)
                drSozlesmeIS.ParselSayisi = Convert.ToByte(ucParselSayiTerkini.Sayi);
            else if (enmIsTur == EnumIsTur.Cins_Degisikligi_Yapili_Hale_Getirme)
            {
                drSozlesmeIS.EkBinaSayisi = Convert.ToByte(ucCinDegisikligiBinaSayisi.Sayi);
                drSozlesmeIS.BinaAlani = ucCinsDegisikligiBinaAlani.Sayi;
                if (ucYuzolcumu.OndalikSayi < ucCinsDegisikligiBinaAlani.Sayi)
                {
                    MesajGoster(Page, "Cins değişikliği alanındaki bina alanı verilmiş yüzölçümden büyük olamaz!", MesajTipiEnum.Hata);
                    return;
                }

            }
            else if (enmIsTur == EnumIsTur.Cins_Degisikligi_Yapisiz_Hale_Getirme)
                drSozlesmeIS.AraziyeGidilecekMi = Convert.ToByte(ddlAraziyeGidilmesiGerekliMiCinsDegisikligi.SelectedValue);

            dsSozlesmeIs.SozlesmeTalepEdilenIs.AddSozlesmeTalepEdilenIsRow(drSozlesmeIS);

            lblUcret.Text += enmIsTur.ToString().Replace("_", " ") + " Ücreti = " + drSozlesmeIS.UcretKDVDahil.ToString() + " TL" + "<br/>";
        }

        protected void btnKaydet_Click(object sender, EventArgs e)
        {
            SozlesmeIsKurali oSozlesme = new SozlesmeIsKurali();
            SozlesmeDataSet.SozlesmeRow drSozlesme = null;
            SozlesmeTalepEdilenIsDataSet dsSozlesmeIs = new SozlesmeTalepEdilenIsDataSet();

            if (SozlesmeListesi == null)
            {
                SozlesmeListesi = new SozlesmeDataSet();
            }
            if (SecilenSozlesmeID == -1)
            {
                drSozlesme = SozlesmeListesi.Sozlesme.NewSozlesmeRow();

                if (AktifKullanici.KullaniciBilgisiRow.KullaniciTurID == EnumKullaniciTur.Lisans_Sahibi.GetHashCode())
                    drSozlesme.LisansSahibiKullaniciID = AktifKullanici.KullaniciID;
                else if (AktifKullanici.KullaniciBilgisiRow.KullaniciTurID == EnumKullaniciTur.Mühendis.GetHashCode())
                    drSozlesme.LisansSahibiKullaniciID = AktifKullanici.KullaniciBilgisiRow.LisansSahibiKullaniciID;

                drSozlesme.KayitYapanKullaniciID = AktifKullanici.KullaniciID;
            }
            else
            {
                drSozlesme = SozlesmeListesi.Sozlesme.FindBySozlesmeID(SecilenSozlesmeID);
                dsSozlesmeIs = oSozlesme.SozlesmeTalepEdilenIsGetirbySozlesmeID(SecilenSozlesmeID).Sonuc;
                foreach (SozlesmeTalepEdilenIsDataSet.SozlesmeTalepEdilenIsRow drIsSil in dsSozlesmeIs.SozlesmeTalepEdilenIs.Rows)
                    drIsSil.Delete();
            }
            if (cbYapisizkenYapiliHaleGetirme.Checked && (ucYuzolcumu.OndalikSayi < ucCinsDegisikligiBinaAlani.Sayi))
            {
                MesajGoster(Page, "Cins değişikliği alanındaki bina alanı verilmiş yüzölçümden büyük olamaz!", MesajTipiEnum.Hata);
                return;
            }

            drSozlesme.IlID = Convert.ToByte(ddlIl.SelectedValue);
            drSozlesme.IlceID = Convert.ToInt16(ddlIlce.SelectedValue);
            drSozlesme.KoyMahalle = txtKoyMahalle.Text.Trim();
            drSozlesme.MalikAdi = txtMalikAdi.Text.Trim();
            drSozlesme.MalikSoyadi = txtMalikSoyadi.Text.Trim();

            drSozlesme.AdaNo = txtAda.Text.Trim();
            drSozlesme.ParselNo = txtParselNo.Text.Trim();
            drSozlesme.PlanNo = txtPlanNo.Text.Trim();
            drSozlesme.PaftaNo = txtPaftaNo.Text.Trim();
            drSozlesme.KayitTarihi = ucKayitTarihi.Tarih;
            drSozlesme.KayitNo = txtKayitNo.Text.Trim();
            drSozlesme.YuzOlcumu = Convert.ToString(ucYuzolcumu.OndalikSayi);//TODO : Sayı Olacak.
            drSozlesme.IsinYapilacagiTarih = ucIsinYapilacagiTarih.Tarih;

            drSozlesme.Adi = txtMusteriAdi.Text.Trim();
            drSozlesme.Soyadi = txtMusteriSoyadi.Text.Trim();
            drSozlesme.Unvani = txtUnvan.Text.Trim();
            drSozlesme.TCKimlikNo = txtTCKimlikNo.Text.Trim();
            drSozlesme.VergiNo = txtVergiNo.Text.Trim();
            drSozlesme.TelefonNo = txtTelefon.Text.Trim();
            drSozlesme.Adres = txtAdres.Text.Trim();
            if (txtTCKimlikNo.Text != "")
                drSozlesme.MusteriTipi = Convert.ToByte(EnumMusteriTipi.Kişi);
            else
                drSozlesme.MusteriTipi = Convert.ToByte(EnumMusteriTipi.Firma);


            decimal ToplamUcret = 0;

            if (cbAplikasyon.Checked)
                SozlesmeTalepedilenIsKaydet(ref dsSozlesmeIs, ref ToplamUcret, EnumIsTur.Aplikasyon);
            if (cbKadastrolYolSinirlarininBelirleme.Checked)
                SozlesmeTalepedilenIsKaydet(ref dsSozlesmeIs, ref ToplamUcret, EnumIsTur.Kadasrtal_Yol_Sınırlarının_Belirlenmesi);
            if (cbBirlestirme.Checked)
                SozlesmeTalepedilenIsKaydet(ref dsSozlesmeIs, ref ToplamUcret, EnumIsTur.Birleştirme);
            if (cbIrtifakTesisi.Checked)
                SozlesmeTalepedilenIsKaydet(ref dsSozlesmeIs, ref ToplamUcret, EnumIsTur.İrtifak_Hakki_Tesisi);
            if (cbIrtifakTerkini.Checked)
                SozlesmeTalepedilenIsKaydet(ref dsSozlesmeIs, ref ToplamUcret, EnumIsTur.İrtifak_Hakki_Terkini);
            if (cbYapisizkenYapiliHaleGetirme.Checked)
                SozlesmeTalepedilenIsKaydet(ref dsSozlesmeIs, ref ToplamUcret, EnumIsTur.Cins_Degisikligi_Yapili_Hale_Getirme);
            if (cbYapiliykenYapisizHaleGetirme.Checked)
                SozlesmeTalepedilenIsKaydet(ref dsSozlesmeIs, ref ToplamUcret, EnumIsTur.Cins_Degisikligi_Yapisiz_Hale_Getirme);
            if (cbYerGostermeParsel.Checked)
                SozlesmeTalepedilenIsKaydet(ref dsSozlesmeIs, ref ToplamUcret, EnumIsTur.Yer_Gösterme_Parseli);
            if (cbYerGostermeBagimsiz.Checked)
                SozlesmeTalepedilenIsKaydet(ref dsSozlesmeIs, ref ToplamUcret, EnumIsTur.Yer_Gösterme_Bağimsiz_Bölum);

            drSozlesme.Ucret = ToplamUcret;
            drSozlesme.UcretKDVDahil = ToplamUcret;

            if (SecilenSozlesmeID == -1)
                SozlesmeListesi.Sozlesme.AddSozlesmeRow(drSozlesme);

            if (SozlesmeListesi.HasChanges())
            {
                FonksiyonSonuc<SozlesmeDataSet> oSonuc = oSozlesme.SozlesmeKaydet((SozlesmeDataSet)SozlesmeListesi.GetChanges(), dsSozlesmeIs);
                if (oSonuc.HataVarMi)
                {
                    SozlesmeListesi.RejectChanges();
                    throw new Exception(oSonuc.Hata + " " + oSonuc.ExMesaji);
                }

                SozlesmeListesi.AcceptChanges();
                SozlesmeListesi = oSonuc.Sonuc;
                SecilenSozlesmeID = Convert.ToInt32(oSonuc.Sonuc.Sozlesme.Rows[oSonuc.Sonuc.Sozlesme.Count - 1]["SozlesmeID"].ToString());
            }

            lblUcret.Text += "Toplam Ücret = " + ToplamUcret + " TL";
            trUcret.Visible = true;
            MesajGoster(Page, "Sözleşme Başarıyla Kaydedilmiştir.", MesajTipiEnum.Uyari);
        }

        private decimal UcretHesapla(int IlID, EnumIsTur enmIsTur, double YuzOlcumu)
        {
            IlKatsayiDataSet.IlKatsayiRow drKatsayi = (IlKatsayiDataSet.IlKatsayiRow)CachePage.IlKatsayiGetir().IlKatsayi.Select("BitisTarihi IS NULL AND IlID=" + IlID)[0];

            HizmetUcretPrmDataSet.HizmetUcretPrmRow drHizmetUcret = null;
            decimal ToplamUcret = 0;
            if (enmIsTur == EnumIsTur.Aplikasyon)
            {
                if (YuzOlcumu <= 1000)
                {
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Aplikasyon_1_100.GetHashCode())[0];
                    ToplamUcret = drHizmetUcret.Ucret;
                }
                else if (YuzOlcumu > 1000 && YuzOlcumu <= 3000)
                {
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Aplikasyon_1001_3000.GetHashCode())[0];
                    ToplamUcret = drHizmetUcret.Ucret;
                }
                else if (YuzOlcumu > 3000 && YuzOlcumu <= 5000)
                {
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Aplikasyon_3001_5000.GetHashCode())[0];
                    ToplamUcret = drHizmetUcret.Ucret;
                }
                else if (YuzOlcumu > 5000 && YuzOlcumu <= 10000)
                {
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Aplikasyon_5001_10000.GetHashCode())[0];
                    ToplamUcret = drHizmetUcret.Ucret;
                }
                else if (YuzOlcumu > 10000 && YuzOlcumu <= 20000)
                {
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Aplikasyon_10001_20000.GetHashCode())[0];
                    ToplamUcret = drHizmetUcret.Ucret;
                }
                else if (YuzOlcumu > 20000 && YuzOlcumu <= 50000)
                {
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Aplikasyon_20001_50000.GetHashCode())[0];
                    ToplamUcret = drHizmetUcret.Ucret;
                }
                else if (YuzOlcumu > 50000 && YuzOlcumu <= 100000)
                {
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Aplikasyon_50001_100000.GetHashCode())[0];
                    ToplamUcret = drHizmetUcret.Ucret;
                }
                else if (YuzOlcumu > 100000 && YuzOlcumu <= 200000)
                {
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Aplikasyon_100001_200000.GetHashCode())[0];
                    ToplamUcret = drHizmetUcret.Ucret;
                }
                else if (YuzOlcumu > 200000 && YuzOlcumu <= 500000)
                {
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Aplikasyon_200001_500000.GetHashCode())[0];
                    ToplamUcret = drHizmetUcret.Ucret;
                }
                else if (YuzOlcumu > 500000)
                {
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Aplikasyon_200001_500000.GetHashCode())[0];
                    ToplamUcret = drHizmetUcret.Ucret;

                    YuzOlcumu = YuzOlcumu - 500000;
                    int CarpilacakDeger = Convert.ToInt32(YuzOlcumu / 100000) + 1;

                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Aplikasyon_500000_Üstü_Katsayı.GetHashCode())[0];
                    ToplamUcret += drHizmetUcret.Ucret * CarpilacakDeger;
                }

                if (ddlIkinciAplikasyonTalebi.SelectedValue == EnumEvetHayir.Evet.GetHashCode().ToString())
                {
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.İkinci_Aplikasyon_Talebi.GetHashCode())[0];
                    ToplamUcret += drHizmetUcret.Ucret;
                }
            }
            else if (enmIsTur == EnumIsTur.Kadasrtal_Yol_Sınırlarının_Belirlenmesi)
            {
                if (YuzOlcumu <= 10)
                {
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Kadastral_Yol_Sınırlarının_Belirlenmesi_1_10.GetHashCode())[0];
                    ToplamUcret = drHizmetUcret.Ucret;
                }
                else if (YuzOlcumu > 10)
                {
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Kadastral_Yol_Sınırlarının_Belirlenmesi_1_10.GetHashCode())[0];
                    ToplamUcret = drHizmetUcret.Ucret;

                    YuzOlcumu = YuzOlcumu - 10;

                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Kadastral_Yol_Sınırlarının_Belirlenmesi_10_Üstü_Katsayı.GetHashCode())[0];
                    ToplamUcret += Convert.ToInt32(YuzOlcumu) * drHizmetUcret.Ucret;
                }
            }
            else if (enmIsTur == EnumIsTur.Birleştirme)
            {
                drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Birleştirme_0_2_Parsel.GetHashCode())[0];
                ToplamUcret = drHizmetUcret.Ucret;

                if (ucParselSayiBirlestirme.Sayi > 2)
                {
                    double ArtisMiktari = 0;
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Birleştirme_2_Üstü_Parsel.GetHashCode())[0];
                    ArtisMiktari = Convert.ToDouble(drHizmetUcret.Ucret);

                    ToplamUcret = ToplamUcret + Convert.ToDecimal((Convert.ToDouble(ToplamUcret) * (ucParselSayiBirlestirme.Sayi - 2) * ArtisMiktari) / 100);
                }
            }
            else if (enmIsTur == EnumIsTur.İrtifak_Hakki_Tesisi)
            {
                drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.İrtifak_Hakkı_Tesisi_1_Parsel.GetHashCode())[0];
                ToplamUcret = drHizmetUcret.Ucret;

                if (ucParselSayiTesisi.Sayi > 1)
                {
                    decimal ArtisMiktari = 0;
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.İrtifak_Hakkı_Tesisi_İlave_Her_Parsel.GetHashCode())[0];
                    ArtisMiktari = drHizmetUcret.Ucret;

                    ToplamUcret = ToplamUcret + ((ucParselSayiTesisi.Sayi - 1) * ArtisMiktari);
                }
            }
            else if (enmIsTur == EnumIsTur.İrtifak_Hakki_Terkini)
            {
                drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.İrtifak_Hakkı_Terkini_1_Parsel.GetHashCode())[0];
                ToplamUcret = drHizmetUcret.Ucret;

                if (ucParselSayiTerkini.Sayi > 1)
                {
                    decimal ArtisMiktari = 0;
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.İrtifak_Hakkı_Terkini_İlave_Her_Parsel.GetHashCode())[0];
                    ArtisMiktari = drHizmetUcret.Ucret;

                    ToplamUcret = ToplamUcret + ((ucParselSayiTerkini.Sayi - 1) * ArtisMiktari);
                }
            }
            else if (enmIsTur == EnumIsTur.Cins_Degisikligi_Yapili_Hale_Getirme)
            {
                drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Cins_Degisikligi_Yapili_Hale_Getirme_0_500.GetHashCode())[0];
                ToplamUcret = drHizmetUcret.Ucret;

                if (ucCinsDegisikligiBinaAlani.Sayi > 500)
                {
                    decimal ArtisMiktari = 0;
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Cins_Degisikligi_Yapili_Hale_Getirme_500_Üstü_Katsayı.GetHashCode())[0];
                    ArtisMiktari = drHizmetUcret.Ucret;

                    ToplamUcret = ToplamUcret + ((ucParselSayiTerkini.Sayi - 500) * ArtisMiktari);
                }
                if (ucCinDegisikligiBinaSayisi.Sayi > 1)
                {
                    decimal ArtisMiktari = 0;
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Cins_Degisikligi_Yapili_Hale_Getirme_İlave_Bina.GetHashCode())[0];
                    ArtisMiktari = drHizmetUcret.Ucret;

                    ToplamUcret = ToplamUcret + ((ucParselSayiTerkini.Sayi - 1) * ArtisMiktari);
                }
            }
            else if (enmIsTur == EnumIsTur.Cins_Degisikligi_Yapisiz_Hale_Getirme)
            {
                drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Cins_Degisikligi_Yapisiz_Hale_Getirme.GetHashCode())[0];
                ToplamUcret = drHizmetUcret.Ucret;

                if (ddlAraziyeGidilmesiGerekliMiCinsDegisikligi.SelectedValue == EnumEvetHayir.Evet.GetHashCode().ToString())
                {
                    decimal ArtisMiktari = 0;
                    drHizmetUcret = (HizmetUcretPrmDataSet.HizmetUcretPrmRow)CachePage.HizmetUcretGetir().HizmetUcretPrm.Select("BitisTarihi IS NULL AND HizmetUcretEnumID=" + EnumHizmetUcret.Cins_Degisikligi_Yapisiz_Hale_Getirme_Araziye_Gitme_Ucreti.GetHashCode())[0];
                    ArtisMiktari = drHizmetUcret.Ucret;

                    ToplamUcret = ToplamUcret + ArtisMiktari;
                }
            }
            ToplamUcret = Convert.ToDecimal(Convert.ToDouble(ToplamUcret) * drKatsayi.Katsayi);
            return ToplamUcret;
        }

        protected void ddlIl_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddlIlce.Items.Clear();
            ddlIlce.Enabled = true;
            if (ddlIl.SelectedValue != "-1")
            {
                string YetkiliIlceler = DSValueToStr(AktifKullanici.KullaniciYetkiliBolgeleri, "IlceID");
                IlcePrmDataSet.IlcePrmRow[] drIlceler = (IlcePrmDataSet.IlcePrmRow[])CachePage.IlceGetir().IlcePrm.Select("IlceID IN " + YetkiliIlceler + " AND IlID=" + ddlIl.SelectedValue);
                IlcePrmDataSet dsIlce = new IlcePrmDataSet();
                dsIlce.Merge(drIlceler);
                ListDoldurFromDS(dsIlce, ddlIlce, "IlceAdi", "IlceID", ListeIlkYazı.Seçiniz);
                if (drIlceler.Length == 1)
                {
                    ddlIlce.SelectedValue = drIlceler[0].IlceID.ToString();
                    ddlIlce.Enabled = false;
                }
            }
            else
            {
                ListSatirEkle(ddlIlce, "Seçiniz", "-1");
            }
        }

        protected void cbAplikasyon_CheckedChanged(object sender, EventArgs e)
        {
            trIkinciAplikasyonTalebi.Visible = cbAplikasyon.Checked;
        }
        protected void cbBirlestirme_CheckedChanged(object sender, EventArgs e)
        {
            trParselSayiBirlestirme.Visible = cbBirlestirme.Checked;
        }
        protected void cbIrtifakTesisi_CheckedChanged(object sender, EventArgs e)
        {
            trParselSayiTesisi.Visible = cbIrtifakTesisi.Checked;
        }
        protected void cbIrtifakTerkini_CheckedChanged(object sender, EventArgs e)
        {
            trParselSayiTerkini.Visible = cbIrtifakTerkini.Checked;
        }
        protected void cbYapisizkenYapiliHaleGetirme_CheckedChanged(object sender, EventArgs e)
        {
            trYapisizkenYapiliHaleGetirme.Visible = cbYapisizkenYapiliHaleGetirme.Checked;
        }
        protected void cbYapiliykenYapisizHaleGetirme_CheckedChanged(object sender, EventArgs e)
        {
            trYapiliykenYapisizHaleGetirme.Visible = cbYapiliykenYapisizHaleGetirme.Checked;
        }
    }
}